package com.example.tnot.api;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.widget.ImageView;

/**
 * 简单的视频解码器，将字节数据转换为Bitmap并显示到ImageView
 * 实际应用中可以扩展为使用MediaCodec进行硬件解码
 */
public class VideoDecoder {
    private ImageView targetView;
    private Bitmap currentBitmap;

    // 实现接收ImageView的构造器
    public VideoDecoder(ImageView imageView) {
        this.targetView = imageView;
    }

    /**
     * 解码并显示视频帧
     * @param frameData 视频帧字节数据
     */
    public void decodeAndShow(byte[] frameData) {
        if (frameData == null || frameData.length == 0) {
            return;
        }

        // 1. 解码原始Bitmap
        currentBitmap = BitmapFactory.decodeByteArray(frameData, 0, frameData.length);
        if (currentBitmap == null) return;

        // 2. 旋转Bitmap（根据实际需要调整角度，通常竖屏需旋转90度）
        Matrix matrix = new Matrix();
        matrix.postRotate(90); // 旋转90度（根据实际方向调整：90/270）
        Bitmap rotatedBitmap = Bitmap.createBitmap(
                currentBitmap,
                0, 0,
                currentBitmap.getWidth(),
                currentBitmap.getHeight(),
                matrix,
                true
        );

        // 3. 释放原始Bitmap，避免内存泄漏
        currentBitmap.recycle();
        currentBitmap = rotatedBitmap;

        // 4. 显示旋转后的Bitmap
        if (currentBitmap != null && targetView != null) {
            targetView.post(() -> {
                targetView.setImageBitmap(currentBitmap);
            });
        }
    }

    /**
     * 释放资源
     */
    public void release() {
        if (currentBitmap != null) {
            currentBitmap.recycle();
            currentBitmap = null;
        }
        targetView = null;
    }
}
